<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="test"></div>
    <script src="./js/react.development.js"></script>
    <script src="./js/react-dom.development.js"></script>
    <script src="./js/babel.min.js"></script>
    <script type="text/babel">
    /*
        高阶函数：如果一个函数符合下面2个规范中任何一个，该函数就是高阶函数
            1.若A函数，接受的参数是一个函数，那么A函数就是一个高阶函数
            2.若A函数，调用该函数的返回值仍然是一个函数，那么A函数就是一个高阶函数

        函数的柯里化：通过函数调用继续返回函数的方式，实现多次接受参数最后统一处理的函数编码形式
    */
        class Login extends React.Component {
            state = {username:'',password:'',}
            saveFromData = dataType => event => setState({[dataType]:event.target.value})
            handleSubimt = event =>{
                event.preventDefault();
                const {username, password} = this.state;
                alert(username,password);
            }
            render() {
                return (
                    <form action="http://www.baidu.com/" onSubmit={this.handleSubimt}>
                        用户名：<input onChange={this.saveFromData('username')} type="text" name='username'/>
                        密码：<input onChange={this.saveFromData('password')} type="password" name='password'/>
                        <button>登录</button>
                    </form>
                )
            }
        }
        ReactDOM.render(<Login/>,document.getElementById("test"))
    </script>
</body>
</html>